// pages/pages/goods_list.js
import http from '../../utils/http'
let isOver = false // 用来标记请求是否结束且成功
let isSuccess = false // 用来标记请求是否成功
Page({

  /**
   * 页面的初始数据
   */
  data: {
    params: {
      query: '',
      cid: '',
      pagenum: 1,
      pagesize: 10
    },
    goods: [],
    total: 0 // 表示商品的总数量
  },

  // 请求商品列表页的数据
  async getList(cb) { // cb参数通常指的是 callback 意思就是回调函数
    isOver = true // 标记请求正在进行中
    isSuccess = false // 刚进入请求时标记请求未成功
    let { message, meta } = await http({url: '/public/v1/goods/search', data: this.data.params})
    // console.log(data);
    // 我们之前讲过两种合并数组的方法  一种是js的concat方法 另外一种是使用扩展运算符
    // console.log(message);
    isOver = false
    console.log(isOver);
    if(meta && meta.status === 200) { // 判断成立表示请求成功
      isSuccess = true
    }
    if(message) {
      let arr = this.data.goods.concat(message.goods)
      this.setData({
        // goods: [...this.data.goods, ...message.goods]
        goods: arr,
        total: message.total
      })
    } else {
      wx.showToast({
        title: '请求失败,请稍后再试',
        duration: 1000
      })
    }
    // 判断cb如果存在就调用cb函数   a || b  (||是或者的逻辑 这里的意思是如果a成立就执行a 如果a不成立就执行b)
    cb && cb() // (&& 意思是cb如果存在就执行 后面的逻辑 如果不存在就不执行后面的逻辑)
    
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // console.log(options);
    this.setData({
      'params.query': options.query || '',
      'params.cid': options.cat_id || ''
    })
    this.getList()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    if(isOver)  return
    this.data.params.pagenum = 1 // 先让页码变成一方便请求新的数据
    this.getList(() => wx.stopPullDownRefresh())
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    // console.log('到底了');
    // console.log(isOver);
    if(isOver) return
    if(this.data.params.pagenum * this.data.params.pagesize < this.data.total) {
      if(isSuccess) {
        this.data.params.pagenum++
      }
      this.getList()
    } else {
      wx.showToast({
        title: '暂无更多数据',
        duration: 1000
      })
    }
    
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})